package shading;

import java.awt.Color;
import java.util.List;

import principal.Camera;
import principal.Luz;
import principal.Ponto;
import principal.Triangulo;
import principal.Vetor;

public class PhongShading implements Shading{
	
	private Luz luz;
	private Camera camera;
	private Vetor v1;
	private Vetor v2;
	private Vetor v3;
	private Vetor normal;
	public List<Ponto> pontos;
	
	public PhongShading(Luz luz, Triangulo triang, List<Ponto> pontos, Camera camera) {
		this.luz = luz;
		this.camera = camera;
		int vert1 = triang.getVertice1();
		int vert2 = triang.getVertice2();
		int vert3 = triang.getVertice3();
		this.pontos = pontos;
		this.v1 = this.pontos.get(0).getNormal();
		this.v2 = this.pontos.get(1).getNormal();
		this.v3 = this.pontos.get(2).getNormal();
		
	}
	
	public int getRGB(double alfa, double beta, Ponto pontoAtual)
	{
		double gama = 1 - alfa - beta;

		Vetor vNormal = new Vetor(alfa * this.v1.getX() + beta * this.v2.getX() + gama * this.v3.getX(),
				alfa * this.v1.getY() + beta * this.v2.getY() + gama * this.v3.getY(),
				alfa * this.v1.getZ() + beta * this.v2.getZ() + gama * this.v3.getZ());

		vNormal = vNormal.normalizar();

		this.normal = vNormal;

		Color cor = this.luz.calculaCorPhong(pontoAtual, vNormal, camera);

		return cor.getRGB(); 
	}

}
